<?php

class MonitoreoCorreosController extends AppController {

    var $name = 'MonitoreoCorreos';
    var $layout = "ajax";
    var $components = array('Interfaz', 'Email', 'Session');
    var $helpers = array('Interfaz',);
    var $uses = array('Monitoreo', 'Integrador');
    
    public function buscarIntegrador($codigo = null) {
        $sql = "SELECT codclisap, rifcli, nomcli, staclidel 
                FROM interfaces.int_archivo_clientes
                WHERE 1=1 ";
        $sql .= ( !empty($codigo) ) ? "AND codclisap IN ($codigo) " : "";
        $sql .= "AND idarchcli IN (SELECT idarchcli 
                FROM (SELECT codclisap, MAX(idarchcli) AS idarchcli
                FROM interfaces.int_archivo_clientes
                WHERE 1=1 ";
        $sql .= ( !empty($codigo) ) ? " AND codclisap IN ($codigo) " : "";
        $sql .= "GROUP BY codclisap) t1 )";

        return $this->Integrador->query($sql);
    }

    public function index($destinatarios = null) {
        $this->autoRender = false;
        $this->Session->destroy();
        $enviarCorreo = 0;
        $resultado = false;
        $fecha = date('d-m-Y');

        if (!empty($destinatarios)) {
            $sepCorreos = explode(',', $destinatarios);
            foreach ($sepCorreos as $valor) {
                $para['original'][] = $valor;
            }
        } else
            $para = array('original' => array('soportesilos@agropatria.com.ve'));

        $data = $this->Monitoreo->find('all', array('conditions' => array('Monitoreo.estatus' => 1, array('OR' => array('desde >=' => $fecha, 'hasta <=' => $fecha)))));

        $mensaje = "<table border=1 align='center' style='width: 98%; border-spacing: 0; border-collapse: collapse;'>";
        $mensaje .= "<tr>
                        <th width='15%'>C&eacute;dula/Rif</th>
                        <th width='15%'>C&oacute;digo SAP</th>
                        <th>Cliente</th>
                        <th width='1%'>Cr&eacute;dito</th>
                        <th width='1%'>Consumido</th>
                        <th width='1%'>Facturado</th>
                    </tr>";

        if (!empty($data)) {
            $codigoSAP = array();

            foreach ($data AS $valor) {
                $codigoSAP[] = $valor['Beneficiario']['codigo_sap'];
            }

            $codigo = (!isset($codigo)) ? implode(',', $codigoSAP) : null;

            if (!empty($codigo)) {
                $integrador = array();
                try {
                    $dataIntegrador = $this->buscarIntegrador($codigo);
                } catch (Exception $e) {
                    $error = array('error' => $e->getCode());
                }

                foreach ($dataIntegrador AS $int_clave => $int_valor) {
                    foreach ($data AS $bene_clave => $bene_valor) {
                        if ($int_valor[0]['codclisap'] == $bene_valor['Beneficiario']['codigo_sap']) {
                            $data[$bene_clave]['Beneficiario']['nomcli'] = $int_valor[0]['nomcli'];
                            break;
                        }
                    }
                }
            }

            foreach ($data as $valor) {
                if ($valor['Monitoreo']['consumido'] >= $valor['Monitoreo']['monto']) {
                    $enviarCorreo++;
                    $mensaje .= "<tr>
                                    <td>{$valor['Beneficiario']['ced_rif']}</td>
                                    <td>{$valor['Beneficiario']['codigo_sap']}</td>
                                    <td>{$valor['Beneficiario']['nomcli']}</td>
                                    <td align='right'>{$this->Interfaz->miles($valor['Monitoreo']['monto'])}</td>
                                    <td align='right'>{$this->Interfaz->miles($valor['Monitoreo']['consumido'])}</td>
                                    <td align='right'>{$this->Interfaz->miles($valor['Monitoreo']['facturado'])}</td>
                                </tr>";
                }
            }

            $mensaje .= '</table>';
        }
        //echo $mensaje;die();

        if ($enviarCorreo > 0) {
            $this->Email;
            $configuracion = array('smtpServidor' => '192.168.66.6', 'smtpPuerto' => '587', 'smtpSeguridad' => 'tls', 'smtpUsuario' => 'sigesil', 'smtpClave' => '**l1s3g1s**', 'appDomainRoot' => CAKE . "Clases" . DS . "phpmailer" . DS . "plantillas", 'skeletonFile' => '', 'emailEngine' => 'local');
            $this->Email->configuracion($configuracion, array('debug' => 1, 'emailDebug' => 'soportesilos@agropatria.com.ve'));
            $variables = array("##MENSAJE##" => $mensaje,
                "##FECHA##" => $fecha);

            foreach ($variables as $indice => $valor) {
                $this->Email->setVariable($indice, $valor);
            }

            $plantilla = array('asunto' => 'NOTIFICACION DE MONITOREO', 'cuerpo_html' => '<P>##MENSAJE##</P>
<P><STRONG>FECHA:</STRONG> ##FECHA##</P>', 'cuerpo_texto' => '##MENSAJE##

FECHA: ##FECHA##');
            $estado = $this->Email->enviar($de = array('nombre' => 'FRAMEWORK AGROPATRIA', 'email' => 'no-responder@agropatria.com.ve'), $para, $plantilla, null, null, array(array('imagen' => 'img' . DS . 'email_header.jpg', 'etiqueta' => 'cabecera', 'tipo' => 'image/jpg')));
            if ($estado['estatus'])
                $resultado = true;
        } else
            $resultado = "Correo NO enviado.<br/>No existen monitoreos para la fecha: desde >= $fecha | hasta <= $fecha";

        if(is_bool($resultado) && $resultado === true)
            echo "Correo enviado";
        else if(is_bool($resultado) && $resultado === false)
            echo "Correo NO enviado";
        else
            echo $resultado;
    }

}
